package Q15_07_FizzBuzz; public class FizzBuzzThread extends Thread { private static Object lock = new Object(); protected static int current = 1; private int max; private boolean div3, div5; private String toPrint; public FizzBuzzThread(boolean div3, boolean div5, int max, String toPrint) { this.div3 = div3; this.div5 = div5; this.max = max; this.toPrint = toPrint; } public void print() { System.out.println(toPrint); } public void run() { while (true) { synchronized (lock) { if (current > max) { return; } if ((current % 3 == 0) == div3 && (current % 5 == 0) == div5) { print(); current++; } } } } }